import PyInstaller.__main__
import os
import shutil
from pyinstaller_config import datas, hidden_imports, excludes

def clean_build():
    """清理旧的构建文件"""
    for path in ['build', 'dist']:
        if os.path.exists(path):
            shutil.rmtree(path)
    for file in os.listdir('.'):
        if file.endswith('.spec'):
            os.remove(file)

def build():
    """构建可执行文件"""
    print("开始打包...")
    
    # 清理旧文件
    clean_build()
    
    # 构建命令
    PyInstaller.__main__.run([
        'main.py',                     # 主程序文件
        '--name=成帧数据应用软件',        # 程序名称
        '--windowed',                  # GUI模式
        '--onefile',                   # 单文件模式
        '--clean',                     # 清理临时文件
        '--noconfirm',                 # 不确认覆盖
        '--log-level=INFO',           # 日志级别
        *[f'--add-data={src};{dst}' for src, dst in datas],
        *[f'--hidden-import={imp}' for imp in hidden_imports],
        *[f'--exclude-module={exc}' for exc in excludes],
    ])
    
    # 检查结果
    exe_path = os.path.join('dist', '成帧数据应用软件.exe')
    if os.path.exists(exe_path):
        size_mb = os.path.getsize(exe_path) / (1024 * 1024)
        print(f"\n打包成功！")
        print(f"可执行文件: {os.path.abspath(exe_path)}")
        print(f"文件大小: {size_mb:.1f} MB")
    else:
        print("\n打包失败！未找到生成的exe文件")

if __name__ == '__main__':
    build() 